SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO










CREATE PROCEDURE [dbo].[SP_TXMVTO_CNTB_Q33]
/*-------------------------------------------------------------------*/
/*----- Empresa           : OFISIS S.A.                          ----*/
/*----- Cliente           : OFISIS S.A.                          ----*/
/*----- Sistema           : Contabilidad                         ----*/
/*----- Modulo            : Empresa                              ----*/
/*----- Programa          : Registro del Regimen de Retenciones  ----*/
/*----- Nombre            : SP_TXMVTO_CNTB_Q33                   ----*/
/*----- Script            : TXMVTO_CNTB                          ----*/
/*----- Desarrollado por  : Martin Garcia Farfan                 ----*/
/*----- Fecha    Creaci?n      : 27/05/2002                           ----*/
/*----- Base de Datos     : MS SQL Server                        ----*/
/*----- Version BD        : 7.0                                  ----*/
/*-------------------------------------------------------------------*/
/*-------------------------------------------------------------------*/
/*----- Modificado 1 por  : Martin Garcia Farfan                 ----*/
/*----- Fecha Modifica    : 28/05/2002                           ----*/
/*----- Detalle Modifica  : Cambio de Cursor                     ----*/
/*-------------------------------------------------------------------*/
/*----- Modificado 2 por  : Marco Acua Paredes                 ----*/
/*----- Fecha Modifica    : 03/10/2002                           ----*/
/*----- Detalle Modifica  : Nueva Versi?n                     ----*/
/*-------------------------------------------------------------------*/
/*-------------------------------------------------------------------*/
/*----- Drop proc SP_TXMVTO_CNTB_Q33                           ----*/
/*----- Grant all on SP_TXMVTO_CNTB_Q33 to PUBLIC                ----*/
/*----- Exec SP_TXMVTO_CNTB_Q33 '01', 1, 2002, 8, 'T', 'P', '', '' --*/
/*-------------------------------------------------------------------*/
@ISCO_EMPR       TD_VC_002,
@INNU_CNTB_EMPR  TD_IN_001,
@INNU_ANNO       TD_IN_004_ANNO,
@INNU_MESE       TD_IN_002_MESE,
@ISTI_REPO       TD_VC_001,
@ISTI_AUXI_EMPR  TD_VC_001,
@ISCO_AUXI_INIC  TD_VC_020,
@ISCO_AUXI_FINA  TD_VC_020
As

Declare
@CSCO_UNID_CNTB  TD_VC_003,
@CSCO_OPRC_CNTB  TD_VC_003,
@CSNU_ASTO       TD_VC_010,
@CDFE_ASTO_CNTB  TD_DT_001,
@CSTI_AUXI_EMPR  TD_VC_001,
@CSCO_AUXI_EMPR  TD_VC_020,
@CSNO_AUXI       TD_VC_050,
@CSNU_RUCS       TD_VC_020,
@CSTI_DOCU       TD_VC_003,
@CSNU_DOCU       TD_VC_020,
@CDFE_DOCU       TD_DT_001,
@CNIM_MVTO_ORIG  TD_NU_016_004,
@CNIM_MVTO_CNTB  TD_NU_016_004,
@CSTI_DOCU_REFE  TD_VC_003,
@CSNU_DOCU_REFE  TD_VC_020,
@CDFE_DOCU_REFE  TD_DT_001,
@CNIM_MVTO_RETE  TD_NU_016_004,
@VNNU_ANNO       TD_IN_004_ANNO,
@VNNU_MESE       TD_IN_002_MESE,
@VSCO_OPRC_CNTB  TD_VC_003,
@VDFE_ASTO_CNTB  TD_DT_001,
@VSNU_ASTO       TD_VC_010,
@VSTI_DOCU       TD_VC_003,
@VSNU_DOCU       TD_VC_020,
@VDFE_DOCU       TD_DT_001,
@VNIM_MVTO_CNTB  TD_NU_016_004,
@VSCO_IIGV_RETE  TD_VC_010

-- Tabla Temporal
Create Table #TXMVTO_CNTB_Q29
(TI_AUXI_EMPR  Varchar(01)   NULL,
 CO_AUXI_EMPR  Varchar(20)   NULL,
 NO_AUXI       Varchar(50)   NULL,
 NU_RUCS       Varchar(20)   NULL,
 FE_PAGO       Datetime      NULL,
 TI_DOCU       Varchar(03)   NULL,
 NU_DOCU       Varchar(20)   NULL,
 IM_MVTO_PROV  Numeric(16,4) NULL,
 IM_MVTO_PAGO  Numeric(16,4) NULL,
 IM_MVTO_RETE  Numeric(16,4) NULL,
 CO_UNID_CNTB  Varchar(03)   NULL,
 CO_OPRC_CNTB  Varchar(03)   NULL,
 NU_ASTO       Varchar(10)   NULL,
 TI_DOCU_REFE  Varchar(03)   NULL,
 NU_DOCU_REFE  Varchar(20)   NULL,
 FE_DOCU_REFE  Datetime      NULL) 

-- Cuenta de IGV Retencion
Select @VSCO_IIGV_RETE = CO_CNTA_EMPR
  from TTIDEN_CNTA
 Where CO_EMPR = @ISCO_EMPR
 and NU_CNTB_EMPR = @INNU_CNTB_EMPR
 and ID_CNTA = '024'

-- Todo los Auxiliares
if @ISTI_REPO = 'T'
  Declare CU_TXMVTO_CNTB_Q29_1 Cursor
   For
   Select t1.CO_UNID_CNTB, t1.CO_OPRC_CNTB, t1.NU_ASTO, t1.FE_ASTO_CNTB, t1.TI_AUXI_EMPR, 
          t1.CO_AUXI_EMPR, t2.NO_AUXI, t2.NU_RUCS, t1.TI_DOCU, t1.NU_DOCU, t1.FE_DOCU, 
          t1.IM_MVTO_ORIG, t1.IM_MVTO_CNTB, TI_DOCU_REFE, NU_DOCU_REFE, 
          t1.FE_DOCU_REFE, t1.IM_MVTO_RETE
   from TXMVTO_CNTB t1, TMAUXI_EMPR t2
    Where t1.CO_EMPR = @ISCO_EMPR
    and t1.NU_CNTB_EMPR = @INNU_CNTB_EMPR
    and t1.NU_ANNO = @INNU_ANNO
    and t1.NU_MESE = @INNU_MESE
    and t1.CO_OPRC_CNTB In (SELECT CO_OPRC_CNTB FROM TTIDEN_OPER
                                          WHERE CO_EMPR = @ISCO_EMPR
                                           AND NU_CNTB_EMPR = @INNU_CNTB_EMPR
                                           AND ID_OPRC ='025') -- Operacion donde se registran las cancelaciones
    and t1.NU_ASTO In (Select NU_ASTO
                     from TXMVTO_CNTB  
                    Where CO_EMPR = @ISCO_EMPR
                    and NU_CNTB_EMPR = @INNU_CNTB_EMPR
                    and NU_ANNO = @INNU_ANNO
                    and NU_MESE = @INNU_MESE
                    and CO_OPRC_CNTB In (SELECT CO_OPRC_CNTB FROM TTIDEN_OPER
                                          WHERE CO_EMPR = @ISCO_EMPR
                                           AND NU_CNTB_EMPR = @INNU_CNTB_EMPR
                                           AND ID_OPRC ='025') -- Operacion donde se registran las cancelaciones
                    and CO_CNTA_EMPR In (Select CO_CNTA_EMPR
                                           from TTIDEN_CNTA
                                           Where CO_EMPR = @ISCO_EMPR
                                             and NU_CNTB_EMPR = @INNU_CNTB_EMPR
                                             and ID_CNTA = '024')
                    and SI_MVTO_CNTB = 'APR')
     and t1.CO_CNTA_EMPR In (Select CO_CNTA_EMPR
                       from TTIDEN_CNTA
                       Where CO_EMPR = @ISCO_EMPR
                       and ID_CNTA = '001')
     and t1.NU_DOCU_REFE IS NOT NULL
     and t1.SI_MVTO_CNTB = 'APR'
     and t1.CO_EMPR = t2.CO_EMPR
     and t1.TI_AUXI_EMPR = t2.TI_AUXI_EMPR
     and t1.CO_AUXI_EMPR = t2.CO_AUXI_EMPR
   Order by t1.CO_UNID_CNTB, t1.CO_OPRC_CNTB, t1.NU_ASTO

-- Rango de Auxiliares
if @ISTI_REPO = 'P'
  Declare CU_TXMVTO_CNTB_Q29_1 Cursor
   For
   Select t1.CO_UNID_CNTB, t1.CO_OPRC_CNTB, t1.NU_ASTO, t1.FE_ASTO_CNTB, t1.TI_AUXI_EMPR, 
          t1.CO_AUXI_EMPR, t2.NO_AUXI, t2.NU_RUCS, t1.TI_DOCU, t1.NU_DOCU, t1.FE_DOCU, 
          t1.IM_MVTO_ORIG, t1.IM_MVTO_CNTB, TI_DOCU_REFE, NU_DOCU_REFE, 
          t1.FE_DOCU_REFE, t1.IM_MVTO_RETE
   from TXMVTO_CNTB t1, TMAUXI_EMPR t2
    Where t1.CO_EMPR = @ISCO_EMPR
    and t1.NU_CNTB_EMPR = @INNU_CNTB_EMPR
    and t1.NU_ANNO = @INNU_ANNO
    and t1.NU_MESE = @INNU_MESE
    and t1.CO_OPRC_CNTB In (SELECT CO_OPRC_CNTB FROM TTIDEN_OPER
                                          WHERE CO_EMPR = @ISCO_EMPR
                                           AND NU_CNTB_EMPR = @INNU_CNTB_EMPR
                                           AND ID_OPRC ='025') -- Operacion donde se registran las cancelaciones
    and t1.NU_ASTO In (Select NU_ASTO
                     from TXMVTO_CNTB  
                    Where CO_EMPR = @ISCO_EMPR
                    and NU_CNTB_EMPR = @INNU_CNTB_EMPR
                    and NU_ANNO = @INNU_ANNO
                    and NU_MESE = @INNU_MESE
                    and CO_OPRC_CNTB In (SELECT CO_OPRC_CNTB FROM TTIDEN_OPER
                                          WHERE CO_EMPR = @ISCO_EMPR
                                           AND NU_CNTB_EMPR = @INNU_CNTB_EMPR
                                           AND ID_OPRC ='025') -- Operacion donde se registran las cancelaciones
                    and CO_CNTA_EMPR In (Select CO_CNTA_EMPR
                                           from TTIDEN_CNTA
                                           Where CO_EMPR = @ISCO_EMPR
                                             and NU_CNTB_EMPR = @INNU_CNTB_EMPR
                                             and ID_CNTA = '024')
                    and SI_MVTO_CNTB = 'APR')
     and t1.CO_CNTA_EMPR In (Select CO_CNTA_EMPR
                       from TTIDEN_CNTA
                       Where CO_EMPR = @ISCO_EMPR
                       and ID_CNTA = '001')
     and t1.TI_AUXI_EMPR = @ISTI_AUXI_EMPR
     and t1.CO_AUXI_EMPR >= @ISCO_AUXI_INIC
     and t1.CO_AUXI_EMPR <= @ISCO_AUXI_FINA
     and t1.NU_DOCU_REFE IS NOT NULL
     and t1.SI_MVTO_CNTB = 'APR'
     and t1.CO_EMPR = t2.CO_EMPR
     and t1.TI_AUXI_EMPR = t2.TI_AUXI_EMPR
     and t1.CO_AUXI_EMPR = t2.CO_AUXI_EMPR
   Order by t1.CO_UNID_CNTB, t1.CO_OPRC_CNTB, t1.NU_ASTO


Open CU_TXMVTO_CNTB_Q29_1
Fetch CU_TXMVTO_CNTB_Q29_1 into @CSCO_UNID_CNTB, @CSCO_OPRC_CNTB, @CSNU_ASTO, 
  @CDFE_ASTO_CNTB, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, @CSNO_AUXI, @CSNU_RUCS, 
  @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, @CNIM_MVTO_ORIG, @CNIM_MVTO_CNTB, 
  @CSTI_DOCU_REFE, @CSNU_DOCU_REFE, @CDFE_DOCU_REFE, @CNIM_MVTO_RETE

While @@Fetch_Status = 0
 Begin

 -- Select para obtener la provision inicial
    Select @VNNU_ANNO = NU_ANNO, 
           @VNNU_MESE = NU_MESE, 
           @VSCO_OPRC_CNTB = CO_OPRC_CNTB, 
           @VDFE_ASTO_CNTB = FE_ASTO_CNTB,
           @VSNU_ASTO = NU_ASTO, 
           @VSTI_DOCU = TI_DOCU, 
           @VSNU_DOCU = NU_DOCU, 
           @VDFE_DOCU = FE_DOCU, 
           @VNIM_MVTO_CNTB = IM_MVTO_CNTB
     From TXMVTO_CNTB
    Where CO_EMPR = @ISCO_EMPR
      and NU_CNTB_EMPR = @INNU_CNTB_EMPR
      and NU_ANNO = @INNU_ANNO
      and NU_MESE <= @INNU_MESE
      and CO_OPRC_CNTB In (Select CO_OPRC_CNTB
                           from TTIDEN_OPER
                            Where CO_EMPR = @ISCO_EMPR
                             and NU_CNTB_EMPR = @INNU_CNTB_EMPR
                             and ID_OPRC = '001') 
      and TI_AUXI_EMPR = @CSTI_AUXI_EMPR
      and CO_AUXI_EMPR = @CSCO_AUXI_EMPR
      and TI_DOCU = @CSTI_DOCU
      and NU_DOCU = @CSNU_DOCU
      and FE_DOCU In (Select Min(FE_DOCU)
                       From TXMVTO_CNTB
                     Where CO_EMPR = @ISCO_EMPR
                     and NU_CNTB_EMPR = @INNU_CNTB_EMPR
                     and NU_ANNO = @INNU_ANNO
                     and NU_MESE <= @INNU_MESE
                     and CO_OPRC_CNTB In (Select CO_OPRC_CNTB
                                        from TTIDEN_OPER
                                       Where CO_EMPR = @ISCO_EMPR
                                       and NU_CNTB_EMPR = @INNU_CNTB_EMPR
                                       and ID_OPRC = '001') 
                      and TI_AUXI_EMPR = @CSTI_AUXI_EMPR
                      and CO_AUXI_EMPR = @CSCO_AUXI_EMPR
                      and TI_DOCU = @CSTI_DOCU
                      and NU_DOCU = @CSNU_DOCU
                      and SI_MVTO_CNTB = 'APR')
      and SI_MVTO_CNTB = 'APR'

   --- Luego de Obtener la provision se procede a insertar los valores en la tabla temporal
    Insert into #TXMVTO_CNTB_Q29
    (TI_AUXI_EMPR, CO_AUXI_EMPR, NO_AUXI, NU_RUCS, FE_PAGO, TI_DOCU, NU_DOCU, IM_MVTO_PROV, 
     IM_MVTO_PAGO, IM_MVTO_RETE, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ASTO, TI_DOCU_REFE,
     NU_DOCU_REFE, FE_DOCU_REFE) 
    Values(@CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, @CSNO_AUXI, @CSNU_RUCS, @CDFE_ASTO_CNTB, 
     @CSTI_DOCU, @CSNU_DOCU, @VNIM_MVTO_CNTB, @CNIM_MVTO_CNTB, @CNIM_MVTO_RETE, 
     @CSCO_UNID_CNTB, @CSCO_OPRC_CNTB, @CSNU_ASTO, @CSTI_DOCU_REFE, 
     @CSNU_DOCU_REFE, @CDFE_DOCU_REFE)
   
   Fetch CU_TXMVTO_CNTB_Q29_1 into @CSCO_UNID_CNTB, @CSCO_OPRC_CNTB, @CSNU_ASTO, 
    @CDFE_ASTO_CNTB, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, @CSNO_AUXI, @CSNU_RUCS, 
    @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, @CNIM_MVTO_ORIG, @CNIM_MVTO_CNTB, 
    @CSTI_DOCU_REFE, @CSNU_DOCU_REFE, @CDFE_DOCU_REFE, @CNIM_MVTO_RETE
 End

Close CU_TXMVTO_CNTB_Q29_1
Deallocate CU_TXMVTO_CNTB_Q29_1

-- Select Final para el Reporte 
Select TI_AUXI_EMPR, CO_AUXI_EMPR, NO_AUXI, NU_RUCS, FE_PAGO, TI_DOCU, NU_DOCU, IM_MVTO_PROV,
    IM_MVTO_PAGO, IM_MVTO_RETE, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ASTO, TI_DOCU_REFE,
    NU_DOCU_REFE, FE_DOCU_REFE 
 From #TXMVTO_CNTB_Q29
Order by TI_AUXI_EMPR, CO_AUXI_EMPR, FE_PAGO, TI_DOCU, NU_DOCU

--Return
/*---------------------------------- Fin ----------------------------------*/












GO
